home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickTime / QuickTime 3 Interfaces & Libs / QTDevMac / CIncludes / QD3DWinViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  15.0 KB  |  502 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DWinViewer.h
  3.  
  4.      Contains:    Win32 Viewer Controller Interface File.                                
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __QD3DWINVIEWER__
  19. #define __QD3DWINVIEWER__
  20.  
  21. #ifndef __QD3D__
  22. #include <QD3D.h>
  23. #endif
  24. #ifndef __QD3DGROUP__
  25. #include <QD3DGroup.h>
  26. #endif
  27.  
  28.  
  29. #if TARGET_OS_WIN32
  30. #include <windows.h>
  31. #endif
  32.  
  33.  
  34.  
  35. #if PRAGMA_ONCE
  36. #pragma once
  37. #endif
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42.  
  43. #if PRAGMA_IMPORT
  44. #pragma import on
  45. #endif
  46.  
  47. #if PRAGMA_STRUCT_ALIGN
  48.     #pragma options align=power
  49. #elif PRAGMA_STRUCT_PACKPUSH
  50.     #pragma pack(push, 2)
  51. #elif PRAGMA_STRUCT_PACK
  52.     #pragma pack(2)
  53. #endif
  54.  
  55. #if PRAGMA_ENUM_ALWAYSINT
  56.     #pragma enumsalwaysint on
  57. #elif PRAGMA_ENUM_OPTIONS
  58.     #pragma option enum=int
  59. #elif PRAGMA_ENUM_PACK
  60.     #if __option(pack_enums)
  61.         #define PRAGMA_ENUM_PACK__QD3DWINVIEWER__
  62.     #endif
  63.     #pragma options(!pack_enums)
  64. #endif
  65.  
  66. #if TARGET_OS_WIN32
  67. typedef void *                            TQ3ViewerObject;
  68.  
  69. enum {
  70.     kQ3ViewerShowBadge            = 1 << 0,
  71.     kQ3ViewerActive                = 1 << 1,
  72.     kQ3ViewerControllerVisible    = 1 << 2,
  73.     kQ3ViewerButtonCamera        = 1 << 3,
  74.     kQ3ViewerButtonTruck        = 1 << 4,
  75.     kQ3ViewerButtonOrbit        = 1 << 5,
  76.     kQ3ViewerButtonZoom            = 1 << 6,
  77.     kQ3ViewerButtonDolly        = 1 << 7,
  78.     kQ3ViewerButtonReset        = 1 << 8,
  79.     kQ3ViewerButtonNone            = 1 << 9,
  80.     kQ3ViewerOutputTextMode        = 1 << 10,
  81.     kQ3ViewerDraggingInOff        = 1 << 11,
  82.     kQ3ViewerDefault            = 1 << 15
  83. };
  84.  
  85.  
  86.  
  87. enum {
  88.     kQ3ViewerEmpty                = 0,
  89.     kQ3ViewerHasModel            = 1 << 0,
  90.     kQ3ViewerHasUndo            = 1 << 1
  91. };
  92.  
  93.  
  94. enum TQ3ViewerCameraView {
  95.     kQ3ViewerCameraRestore        = 0,
  96.     kQ3ViewerCameraFit            = 1,
  97.     kQ3ViewerCameraFront        = 2,
  98.     kQ3ViewerCameraBack            = 3,
  99.     kQ3ViewerCameraLeft            = 4,
  100.     kQ3ViewerCameraRight        = 5,
  101.     kQ3ViewerCameraTop            = 6,
  102.     kQ3ViewerCameraBottom        = 7
  103. };
  104. typedef enum TQ3ViewerCameraView TQ3ViewerCameraView;
  105.  
  106.  
  107. /******************************************************************************
  108.  **                                                                             **
  109.  **                                WM_NOTIFY structures                           **
  110.  **                                                                             **
  111.  *****************************************************************************/
  112.  
  113. struct TQ3ViewerDropFiles {
  114.     NMHDR                             nmhdr;
  115.     HANDLE                             hDrop;
  116. };
  117. typedef struct TQ3ViewerDropFiles        TQ3ViewerDropFiles;
  118.  
  119. struct TQ3ViewerSetView {
  120.     NMHDR                             nmhdr;
  121.     TQ3ViewerCameraView             view;
  122. };
  123. typedef struct TQ3ViewerSetView            TQ3ViewerSetView;
  124.  
  125. struct TQ3ViewerSetViewNumber {
  126.     NMHDR                             nmhdr;
  127.     unsigned long                     number;
  128. };
  129. typedef struct TQ3ViewerSetViewNumber    TQ3ViewerSetViewNumber;
  130.  
  131. struct TQ3ViewerButtonSet {
  132.     NMHDR                             nmhdr;
  133.     unsigned long                     button;
  134. };
  135. typedef struct TQ3ViewerButtonSet        TQ3ViewerButtonSet;
  136. /******************************************************************************
  137.  **                                                                             **
  138.  **                                WM_NOTIFY defines                               **
  139.  **                                                                             **
  140.  *****************************************************************************/
  141.  
  142. #define Q3VNM_DROPFILES        0x5000
  143. #define Q3VNM_CANUNDO        0x5001
  144. #define Q3VNM_DRAWCOMPLETE    0x5002
  145. #define Q3VNM_SETVIEW        0x5003
  146. #define Q3VNM_SETVIEWNUMBER    0x5004
  147. #define Q3VNM_BUTTONSET        0x5005
  148. #define Q3VNM_BADGEHIT        0x5006
  149.  
  150. /******************************************************************************
  151.  **                                                                             **
  152.  **                            Win32 Window Class Name                           **
  153.  **        Can be passed as a parameter to CreateWindow or CreateWindowEx       **
  154.  **                                                                             **
  155.  *****************************************************************************/
  156. #define kQ3ViewerClassName "QD3DViewerWindow"
  157.  
  158. /******************************************************************************
  159.  **                                                                             **
  160.  **                            Win32 Clipboard type                              **
  161.  **                                                                             **
  162.  *****************************************************************************/
  163. #define kQ3ViewerClipboardFormat "QuickDraw 3D Metafile"
  164. /******************************************************************************
  165.  **                                                                             **
  166.  **        Return viewer version number                                         **
  167.  **                                                                             **
  168.  *****************************************************************************/
  169. EXTERN_API_C( TQ3Status )
  170. Q3WinViewerGetVersion            (unsigned long *        majorRevision,
  171.                                  unsigned long *        minorRevision);
  172.  
  173.  
  174. /******************************************************************************
  175.  **                                                                             **
  176.  **        Return viewer release version number                                 **
  177.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  178.  **                                                                             **
  179.  *****************************************************************************/
  180. EXTERN_API_C( TQ3Status )
  181. Q3WinViewerGetReleaseVersion    (unsigned long *        releaseRevision);
  182.  
  183.  
  184. /******************************************************************************
  185.  **                                                                             **
  186.  **                        Creation and destruction                             **
  187.  **                Note that this is not a QuickDraw 3D object                     **
  188.  **                                                                             **
  189.  *****************************************************************************/
  190. EXTERN_API_C( TQ3ViewerObject )
  191. Q3WinViewerNew                    (HWND                     window,
  192.                                  const RECT *            rect,
  193.                                  unsigned long             flags);
  194.  
  195. EXTERN_API_C( TQ3Status )
  196. Q3WinViewerDispose                (TQ3ViewerObject         viewer);
  197.  
  198.  
  199. /******************************************************************************
  200.  **                                                                             **
  201.  **                    Functions to attach data to a WinViewer                     **
  202.  **                                                                             **
  203.  *****************************************************************************/
  204. EXTERN_API_C( TQ3Status )
  205. Q3WinViewerUseFile                (TQ3ViewerObject         viewer,
  206.                                  HANDLE                 fileHandle);
  207.  
  208. EXTERN_API_C( TQ3Status )
  209. Q3WinViewerUseData                (TQ3ViewerObject         viewer,
  210.                                  void *                    data,
  211.                                  unsigned long             size);
  212.  
  213.  
  214. /******************************************************************************
  215.  **                                                                             **
  216.  **                Functions to write data out from the WinViewer                 **
  217.  **                                                                             **
  218.  *****************************************************************************/
  219. EXTERN_API_C( TQ3Status )
  220. Q3WinViewerWriteFile            (TQ3ViewerObject         viewer,
  221.                                  HANDLE                 fileHandle);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3WinViewerWriteData            (TQ3ViewerObject         viewer,
  225.                                  void *                    data,
  226.                                  unsigned long             dataSize,
  227.                                  unsigned long *        actualDataSize);
  228.  
  229.  
  230. /******************************************************************************
  231.  **                                                                             **
  232.  **        Use this function to force the WinViewer to re-draw                     **
  233.  **                                                                             **
  234.  *****************************************************************************/
  235. EXTERN_API_C( TQ3Status )
  236. Q3WinViewerDraw                    (TQ3ViewerObject         viewer);
  237.  
  238. EXTERN_API_C( TQ3Status )
  239. Q3WinViewerDrawContent            (TQ3ViewerObject         viewer);
  240.  
  241. EXTERN_API_C( TQ3Status )
  242. Q3WinViewerDrawControlStrip        (TQ3ViewerObject         viewer);
  243.  
  244.  
  245. /******************************************************************************
  246.  **                                                                             **
  247.  **        Function used by the WinViewer to filter and handle events             **
  248.  **                                                                             **
  249.  *****************************************************************************/
  250. EXTERN_API_C( BOOL )
  251. Q3WinViewerMouseDown            (TQ3ViewerObject         viewer,
  252.                                  long                     x,
  253.                                  long                     y);
  254.  
  255. EXTERN_API_C( BOOL )
  256. Q3WinViewerContinueTracking        (TQ3ViewerObject         viewer,
  257.                                  long                     x,
  258.                                  long                     y);
  259.  
  260. EXTERN_API_C( BOOL )
  261. Q3WinViewerMouseUp                (TQ3ViewerObject         viewer,
  262.                                  long                     x,
  263.                                  long                     y);
  264.  
  265.  
  266. /******************************************************************************
  267.  **                                                                             **
  268.  **        This function returns a Bitmap of the contents of the                  **
  269.  **        WinViewer's window.  The application should dispose the Bitmap.         **
  270.  **                                                                             **
  271.  *****************************************************************************/
  272. EXTERN_API_C( HBITMAP )
  273. Q3WinViewerGetBitmap            (TQ3ViewerObject         viewer);
  274.  
  275.  
  276. /******************************************************************************
  277.  **                                                                             **
  278.  **                    Calls for dealing with Buttons                             **
  279.  **                                                                             **
  280.  *****************************************************************************/
  281. EXTERN_API_C( TQ3Status )
  282. Q3WinViewerGetButtonRect        (TQ3ViewerObject         viewer,
  283.                                  unsigned long             button,
  284.                                  RECT *                    rectangle);
  285.  
  286. EXTERN_API_C( unsigned long )
  287. Q3WinViewerGetCurrentButton        (TQ3ViewerObject         viewer);
  288.  
  289. EXTERN_API_C( TQ3Status )
  290. Q3WinViewerSetCurrentButton        (TQ3ViewerObject         viewer,
  291.                                  unsigned long             button);
  292.  
  293.  
  294. /******************************************************************************
  295.  **                                                                             **
  296.  **        Functions to set/get the group to be displayed by the WinViewer.     **
  297.  **                                                                             **
  298.  *****************************************************************************/
  299. EXTERN_API_C( TQ3Status )
  300. Q3WinViewerUseGroup                (TQ3ViewerObject         viewer,
  301.                                  TQ3GroupObject         group);
  302.  
  303. EXTERN_API_C( TQ3GroupObject )
  304. Q3WinViewerGetGroup                (TQ3ViewerObject         viewer);
  305.  
  306.  
  307. /******************************************************************************
  308.  **                                                                             **
  309.  **        Functions to set/get the color used to clear the window                 **
  310.  **                                                                             **
  311.  *****************************************************************************/
  312. EXTERN_API_C( TQ3Status )
  313. Q3WinViewerSetBackgroundColor    (TQ3ViewerObject         viewer,
  314.                                  TQ3ColorARGB *            color);
  315.  
  316. EXTERN_API_C( TQ3Status )
  317. Q3WinViewerGetBackgroundColor    (TQ3ViewerObject         viewer,
  318.                                  TQ3ColorARGB *            color);
  319.  
  320.  
  321. /******************************************************************************
  322.  **                                                                             **
  323.  **        Getting/Setting a WinViewer's View object.  Disposal is needed.         **
  324.  **                                                                             **
  325.  *****************************************************************************/
  326. EXTERN_API_C( TQ3ViewObject )
  327. Q3WinViewerGetView                (TQ3ViewerObject         viewer);
  328.  
  329. EXTERN_API_C( TQ3Status )
  330. Q3WinViewerRestoreView            (TQ3ViewerObject         viewer);
  331.  
  332.  
  333. /******************************************************************************
  334.  **                                                                             **
  335.  **        Calls for setting/getting WinViewer flags                             **
  336.  **                                                                             **
  337.  *****************************************************************************/
  338. EXTERN_API_C( TQ3Status )
  339. Q3WinViewerSetFlags                (TQ3ViewerObject         viewer,
  340.                                  unsigned long             flags);
  341.  
  342. EXTERN_API_C( unsigned long )
  343. Q3WinViewerGetFlags                (TQ3ViewerObject         viewer);
  344.  
  345.  
  346. /******************************************************************************
  347.  **                                                                             **
  348.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  349.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  350.  **        or the current dimensions of the window (if you do a Set).             **
  351.  **                                                                             **
  352.  *****************************************************************************/
  353. EXTERN_API_C( TQ3Status )
  354. Q3WinViewerSetBounds            (TQ3ViewerObject         viewer,
  355.                                  RECT *                    bounds);
  356.  
  357. EXTERN_API_C( TQ3Status )
  358. Q3WinViewerGetBounds            (TQ3ViewerObject         viewer,
  359.                                  RECT *                    bounds);
  360.  
  361. EXTERN_API_C( TQ3Status )
  362. Q3WinViewerSetDimension            (TQ3ViewerObject         viewer,
  363.                                  unsigned long             width,
  364.                                  unsigned long             height);
  365.  
  366. EXTERN_API_C( TQ3Status )
  367. Q3WinViewerGetDimension            (TQ3ViewerObject         viewer,
  368.                                  unsigned long *        width,
  369.                                  unsigned long *        height);
  370.  
  371. EXTERN_API_C( TQ3Status )
  372. Q3WinViewerGetMinimumDimension    (TQ3ViewerObject         viewer,
  373.                                  unsigned long *        width,
  374.                                  unsigned long *        height);
  375.  
  376.  
  377. /******************************************************************************
  378.  **                                                                             **
  379.  **                            Window related calls                             **
  380.  **                                                                             **
  381.  *****************************************************************************/
  382. EXTERN_API_C( TQ3Status )
  383. Q3WinViewerSetWindow            (TQ3ViewerObject         viewer,
  384.                                  HWND                     window);
  385.  
  386. EXTERN_API_C( HWND )
  387. Q3WinViewerGetWindow            (TQ3ViewerObject         viewer);
  388.  
  389. EXTERN_API_C( TQ3ViewerObject )
  390. Q3WinViewerGetViewer            (HWND                     theWindow);
  391.  
  392. EXTERN_API_C( HWND )
  393. Q3WinViewerGetControlStrip        (TQ3ViewerObject         viewer);
  394.  
  395.  
  396. /******************************************************************************
  397.  **                                                                             **
  398.  **        Adjust Cursor provided for compatibility with Mac Viewer             **
  399.  **                                                                             **
  400.  *****************************************************************************/
  401. EXTERN_API_C( TQ3Boolean )
  402. Q3WinViewerAdjustCursor            (TQ3ViewerObject         viewer,
  403.                                  long                     x,
  404.                                  long                     y);
  405.  
  406. EXTERN_API_C( TQ3Status )
  407. Q3WinViewerCursorChanged        (TQ3ViewerObject         viewer);
  408.  
  409.  
  410. /******************************************************************************
  411.  **                                                                             **
  412.  **        Returns the state of the WinViewer.  See the constant defined at the **
  413.  **        top of this file.                                                     **
  414.  **                                                                             **
  415.  *****************************************************************************/
  416. EXTERN_API_C( unsigned long )
  417. Q3WinViewerGetState                (TQ3ViewerObject         viewer);
  418.  
  419.  
  420. /******************************************************************************
  421.  **                                                                             **
  422.  **                            Clipboard utilities                                 **
  423.  **                                                                             **
  424.  *****************************************************************************/
  425. EXTERN_API_C( TQ3Status )
  426. Q3WinViewerClear                (TQ3ViewerObject         viewer);
  427.  
  428. EXTERN_API_C( TQ3Status )
  429. Q3WinViewerCut                    (TQ3ViewerObject         viewer);
  430.  
  431. EXTERN_API_C( TQ3Status )
  432. Q3WinViewerCopy                    (TQ3ViewerObject         viewer);
  433.  
  434. EXTERN_API_C( TQ3Status )
  435. Q3WinViewerPaste                (TQ3ViewerObject         viewer);
  436.  
  437.  
  438. /******************************************************************************
  439.  **                                                                             **
  440.  **                                Undo                                          **
  441.  **                                                                             **
  442.  *****************************************************************************/
  443. EXTERN_API_C( TQ3Status )
  444. Q3WinViewerUndo                    (TQ3ViewerObject         viewer);
  445.  
  446. EXTERN_API_C( TQ3Boolean )
  447. Q3WinViewerGetUndoString        (TQ3ViewerObject         viewer,
  448.                                  char *                    theString,
  449.                                  unsigned long             stringSize,
  450.                                  unsigned long *        actualSize);
  451.  
  452.  
  453. /******************************************************************************
  454.  **                                                                             **
  455.  **                            New Camera Stuff                                 **
  456.  **                                                                             **
  457.  *****************************************************************************/
  458. EXTERN_API_C( TQ3Status )
  459. Q3WinViewerGetCameraCount        (TQ3ViewerObject         viewer,
  460.                                  unsigned long *        count);
  461.  
  462. EXTERN_API_C( TQ3Status )
  463. Q3WinViewerSetCameraNumber        (TQ3ViewerObject         viewer,
  464.                                  unsigned long             cameraNo);
  465.  
  466. EXTERN_API_C( TQ3Status )
  467. Q3WinViewerSetCameraView        (TQ3ViewerObject         viewer,
  468.                                  TQ3ViewerCameraView     viewType);
  469.  
  470. #endif  /* TARGET_OS_WIN32 */
  471.  
  472.  
  473.  
  474. #if PRAGMA_ENUM_ALWAYSINT
  475.     #pragma enumsalwaysint reset
  476. #elif PRAGMA_ENUM_OPTIONS
  477.     #pragma option enum=reset
  478. #elif defined(PRAGMA_ENUM_PACK__QD3DWINVIEWER__)
  479.     #pragma options(pack_enums)
  480. #endif
  481.  
  482. #if PRAGMA_STRUCT_ALIGN
  483.     #pragma options align=reset
  484. #elif PRAGMA_STRUCT_PACKPUSH
  485.     #pragma pack(pop)
  486. #elif PRAGMA_STRUCT_PACK
  487.     #pragma pack()
  488. #endif
  489.  
  490. #ifdef PRAGMA_IMPORT_OFF
  491. #pragma import off
  492. #elif PRAGMA_IMPORT
  493. #pragma import reset
  494. #endif
  495.  
  496. #ifdef __cplusplus
  497. }
  498. #endif
  499.  
  500. #endif /* __QD3DWINVIEWER__ */
  501.  
  502.